From 97e8c4d5064add96cbe01d6b60b4923056481939 Mon Sep 17 00:00:00 2001 From: YoungThug Date: Thu, 10 Apr 2025 19:06:47 -0700 Subject: [PATCH 01/12] Wizard added in all at once! (#36408) SpeedMergePlease --- Resources/Prototypes/game_presets.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/game_presets.yml b/Resources/Prototypes/game_presets.yml index 3df262096b..160bb5e4a0 100644 --- a/Resources/Prototypes/game_presets.yml +++ b/Resources/Prototypes/game_presets.yml @@ -39,6 +39,7 @@ - Traitor - Revolutionary - Zombie + - Wizard - KesslerSyndromeScheduler - RampingStationEventScheduler - SpaceTrafficControlEventScheduler @@ -59,6 +60,7 @@ - Traitor - Revolutionary - Zombie + - Wizard - BasicStationEventScheduler - KesslerSyndromeScheduler - MeteorSwarmMildScheduler From b2c05b807d3822d44421db78f58007d9cf983a88 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 11 Apr 2025 02:07:53 +0000 Subject: [PATCH 02/12] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c23374f764..08ee14a601 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: red15 - changes: - - message: Vending machine lights turns off when broken. - type: Fix - id: 7653 - time: '2024-11-25T12:35:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33513 - author: metalgearsloth changes: - message: Adjusted the top menu on the separated game screen. The buttons will @@ -3892,3 +3885,10 @@ id: 8152 time: '2025-04-11T01:12:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/36453 +- author: YoungThugSS14 + changes: + - message: Wizards now appear roundstart in the "all at once" gamemode. + type: Tweak + id: 8153 + time: '2025-04-11T02:06:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36408 From 3f0ca9b786fc739a3d3862be652b247759e457e4 Mon Sep 17 00:00:00 2001 From: Dinner <180707738+DinnerCalzone@users.noreply.github.com> Date: Thu, 10 Apr 2025 22:10:03 -0400 Subject: [PATCH 03/12] Fix gas mixers and pneumatic valves being hidden by floor tiles (#36428) fix gas mixers and pneumatics valves being hidden by floor tiles --- .../Entities/Structures/Piping/Atmospherics/trinary.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml index c44f700e7f..daeab2dd19 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml @@ -134,6 +134,9 @@ placement: mode: SnapgridCenter components: + - type: SubFloorHide + visibleLayers: + - enum.SubfloorLayers.FirstLayer - type: Sprite sprite: Structures/Piping/Atmospherics/gasmixer.rsi layers: @@ -233,6 +236,8 @@ - type: SubFloorHide blockInteractions: false blockAmbience: false + visibleLayers: + - enum.SubfloorLayers.FirstLayer - type: NodeContainer nodes: inlet: From 6d2f5a68446fd2501fac23487de03accea79539c Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 11 Apr 2025 02:11:10 +0000 Subject: [PATCH 04/12] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 08ee14a601..3672996333 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - message: Adjusted the top menu on the separated game screen. The buttons will - now form multiple rows and no longer overflow into the viewport. - type: Tweak - id: 7654 - time: '2024-11-26T00:59:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33047 - author: slarticodefast changes: - message: Added the greytide virus station event. It will bolt open all doors in @@ -3892,3 +3884,10 @@ id: 8153 time: '2025-04-11T02:06:47.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/36408 +- author: DinnerCalzone + changes: + - message: Fixed gas mixers and pneumatic valves being hidden by floor tiles. + type: Fix + id: 8154 + time: '2025-04-11T02:10:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36428 From 4006914e354b59ee942777ab4c78aeebd1d40157 Mon Sep 17 00:00:00 2001 From: Nox Date: Thu, 10 Apr 2025 19:15:26 -0700 Subject: [PATCH 05/12] Descriptions for .25 caseless (#36385) * Initial commit: added descriptions to ammo boxes, cartridges, and magazines, and modified the cobra pistol's description. * Updated magazine descriptions slightly * Updated descriptions according to Roomba's feedback * Minor updates * Minor fixes * Minor touch-up * I should stop making tiny changes. * Update Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml | 2 ++ .../Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml | 4 +++- .../Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml | 2 ++ .../Entities/Objects/Weapons/Guns/Pistols/pistols.yml | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml index 89ac57e9f6..bc9cdd68cf 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml @@ -29,6 +29,7 @@ parent: BaseMagazineBoxCaselessRifle id: MagazineBoxCaselessRifle name: ammunition box (.25 caseless) + description: A cardboard box of .25 caseless rounds. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeCaselessRifle @@ -43,6 +44,7 @@ parent: BaseMagazineBoxCaselessRifle id: MagazineBoxCaselessRiflePractice name: ammunition box (.25 caseless practice) + description: A cardboard box of .25 caseless rounds. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgeCaselessRiflePractice diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml index 649c0d4542..fd465b71d6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml @@ -1,6 +1,6 @@ - type: entity id: BaseCartridgeCaselessRifle - name: cartridge (.25 rifle) + name: cartridge (.25 caseless) parent: [ BaseCartridge, BaseSecurityContraband ] abstract: true components: @@ -25,6 +25,7 @@ id: CartridgeCaselessRifle name: cartridge (.25 caseless) parent: BaseCartridgeCaselessRifle + description: A small caliber utilizing caseless technology, omitting conventional brass casing in favor of hardened propellant. Standard kinetic ammunition is common and useful in most situations. components: - type: CartridgeAmmo proto: BulletCaselessRifle @@ -33,6 +34,7 @@ id: CartridgeCaselessRiflePractice name: cartridge (.25 caseless practice) parent: BaseCartridgeCaselessRifle + description: A small caliber utilizing caseless technology, omitting conventional brass casing in favor of hardened propellant. Chalk ammunition is generally non-harmful, used for practice. components: - type: CartridgeAmmo proto: BulletCaselessRiflePractice diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml index 7361bc09c7..c0af2b67e1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml @@ -100,6 +100,7 @@ id: MagazinePistolCaselessRifle name: "pistol magazine (.25 caseless)" parent: BaseMagazinePistolCaselessRifle + description: 10-round magazine for the Cobra pistol. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeCaselessRifle @@ -120,6 +121,7 @@ id: MagazinePistolCaselessRiflePractice name: "pistol magazine (.25 caseless practice)" parent: BaseMagazinePistolCaselessRifle + description: 10-round magazine for the Cobra pistol. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgeCaselessRiflePractice diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml index 2ace44189e..375045e400 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml @@ -140,7 +140,7 @@ name: cobra parent: [ BaseWeaponPistol, BaseSyndicateContraband ] id: WeaponPistolCobra - description: A rugged, robust operator handgun with inbuilt silencer. Uses .25 caseless ammo. + description: Integrally suppressed semi-automatic pistol used by the Syndicate, firing caseless subsonic rounds. Favored by any agent who likes to keep things quiet and leave no evidence behind. Feeds from .25 pistol magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/Pistols/cobra.rsi From 3a27de3f7edcb34394c937504d0fdb7f3dbcfe75 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 11 Apr 2025 02:16:33 +0000 Subject: [PATCH 06/12] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3672996333..b43f981127 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: slarticodefast - changes: - - message: Added the greytide virus station event. It will bolt open all doors in - a few randomly chosen departments and unlock lockers with the corresponding - access. - type: Add - id: 7655 - time: '2024-11-26T13:50:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33547 - author: slarticodefast changes: - message: Fixed space ambient music not playing. @@ -3891,3 +3882,11 @@ id: 8154 time: '2025-04-11T02:10:03.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/36428 +- author: Nox38, BurgerMoth, ArtisticRoomba + changes: + - message: Added descriptions for all .25 caseless cartridges, magazines, and ammo + boxes. + type: Add + id: 8155 + time: '2025-04-11T02:15:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36385 From 680544a53a8780d23aa357be650b3a3a3f6a5479 Mon Sep 17 00:00:00 2001 From: Nox Date: Thu, 10 Apr 2025 21:58:33 -0700 Subject: [PATCH 07/12] Descriptions for .45 magnum (#36383) * Initial commit: added descriptions to revolvers, N1984, speedloaders, cartridges, and ammo boxes. * Updated descriptions in accordance with Slarti and Roomba's suggestions. * Oops, did a misclick! * Updated Mateba description slightly * Slightly updated pirate revolver description * Updated Mateba description * Updated Mateba description again * Fixed a last occurence of restricted in AP bullets --- .../Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml | 5 +++++ .../Weapons/Guns/Ammunition/Cartridges/magnum.yml | 6 +++++- .../Weapons/Guns/Ammunition/Magazines/magnum.yml | 5 +++++ .../Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml | 6 ++++++ .../Entities/Objects/Weapons/Guns/Pistols/pistols.yml | 4 ++-- .../Objects/Weapons/Guns/Revolvers/revolvers.yml | 10 +++++----- 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml index 6ccf0a1e2a..bee7b33749 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml @@ -28,6 +28,7 @@ parent: BaseMagazineBoxMagnum id: MagazineBoxMagnum name: ammunition box (.45 magnum) + description: A cardboard box of .45 magnum rounds. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnum @@ -42,6 +43,7 @@ parent: BaseMagazineBoxMagnum id: MagazineBoxMagnumPractice name: ammunition box (.45 magnum practice) + description: A cardboard box of .45 magnum rounds. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumPractice @@ -57,6 +59,7 @@ id: MagazineBoxMagnumIncendiary parent: BaseMagazineBoxMagnum name: ammunition box (.45 magnum incendiary) + description: A cardboard box of .45 magnum rounds. Intended to hold self-igniting incendiary ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumIncendiary @@ -72,6 +75,7 @@ id: MagazineBoxMagnumUranium parent: BaseMagazineBoxMagnum name: ammunition box (.45 magnum uranium) + description: A cardboard box of .45 magnum rounds. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumUranium @@ -87,6 +91,7 @@ id: MagazineBoxMagnumAP parent: BaseMagazineBoxMagnum name: ammunition box (.45 magnum armor-piercing) + description: A cardboard box of .45 magnum rounds. Intended to hold rare armor-piercing ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumAP diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml index 383d2adac7..c7adfb5b1e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml @@ -22,6 +22,7 @@ id: CartridgeMagnum name: cartridge (.45 magnum) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Standard kinetic ammunition is common and useful in most situations. components: - type: CartridgeAmmo proto: BulletMagnum @@ -30,6 +31,7 @@ id: CartridgeMagnumPractice name: cartridge (.45 magnum practice) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Chalk ammunition is generally non-harmful, used for practice. components: - type: CartridgeAmmo proto: BulletMagnumPractice @@ -45,6 +47,7 @@ id: CartridgeMagnumIncendiary name: cartridge (.45 magnum incendiary) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Incendiary ammunition contains a self-igniting compound that sets the target ablaze. components: - type: CartridgeAmmo proto: BulletMagnumIncendiary @@ -60,6 +63,7 @@ id: CartridgeMagnumAP name: cartridge (.45 magnum armor-piercing) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Armor piercing ammunition is renowned for its ability to cut straight through body armor. components: - type: CartridgeAmmo proto: BulletMagnumAP @@ -75,6 +79,7 @@ id: CartridgeMagnumUranium name: cartridge (.45 magnum uranium) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Uranium ammunition replaces the lead core of the bullet with fissile material, irradiating the target from the inside. components: - type: CartridgeAmmo proto: BulletMagnumUranium @@ -85,4 +90,3 @@ - state: tip map: [ "enum.AmmoVisualLayers.Tip" ] color: "#65fe08" - diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml index 91a3e4f360..d94bc444a7 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml @@ -52,6 +52,7 @@ name: pistol magazine (.45 magnum any) suffix: empty parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. components: - type: BallisticAmmoProvider proto: null @@ -66,6 +67,7 @@ id: MagazineMagnum name: pistol magazine (.45 magnum) parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnum @@ -80,6 +82,7 @@ id: MagazineMagnumPractice name: pistol magazine (.45 magnum practice) parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumPractice @@ -94,6 +97,7 @@ id: MagazineMagnumUranium name: pistol magazine (.45 magnum uranium) parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumUranium @@ -108,6 +112,7 @@ id: MagazineMagnumAP name: pistol magazine (.45 magnum armor-piercing) parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. Intended to hold rare armor-piercing ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumAP diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml index 3044b1f9ff..9976c88314 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml @@ -23,6 +23,7 @@ id: SpeedLoaderMagnum name: "speed loader (.45 magnum)" parent: BaseSpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnum @@ -43,6 +44,7 @@ id: SpeedLoaderMagnumEmpty name: "speed loader (.45 magnum any)" parent: SpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds for the big iron on your hip. #Big Iron reference (duh) components: - type: BallisticAmmoProvider proto: null @@ -61,6 +63,7 @@ id: SpeedLoaderMagnumIncendiary name: "speed loader (.45 magnum incendiary)" parent: SpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold self-igniting incendiary ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumIncendiary @@ -69,6 +72,7 @@ id: SpeedLoaderMagnumPractice name: "speed loader (.45 magnum practice)" parent: BaseSpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold non-harmful chalk ammunition, perfect for practicing your quick draw. components: - type: BallisticAmmoProvider proto: CartridgeMagnumPractice @@ -89,6 +93,7 @@ id: SpeedLoaderMagnumAP name: "speed loader (.45 magnum armor-piercing)" parent: BaseSpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold rare armor-piercing ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumAP @@ -109,6 +114,7 @@ id: SpeedLoaderMagnumUranium name: "speed loader (.45 magnum uranium)" parent: BaseSpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumUranium diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml index 375045e400..c9e3fdd034 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml @@ -210,8 +210,8 @@ - type: entity name: N1984 parent: [BaseWeaponPistol, BaseSecurityContraband] - id: WeaponPistolN1984 # the spaces in description are for formatting. - description: The sidearm of any self respecting officer. Comes in .45 magnum, the lord's caliber. + id: WeaponPistolN1984 + description: An exceptionally powerful ‘hand cannon’ designed as part of Nanotrasen's BFG initiative. Chambered in .45, the lord’s caliber, it is generally considered too unwieldy for standard use but has become something of a status symbol among Nanotrasen officials. Feeds from .45 pistol magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/Pistols/N1984.rsi diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml index 564ef7f869..18f0d1c109 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml @@ -54,7 +54,7 @@ name: Deckard parent: [BaseWeaponRevolver, BaseSecurityCommandContraband] id: WeaponRevolverDeckard - description: A rare, custom-built revolver. Use when there is no time for Voight-Kampff test. Uses .45 magnum ammo. + description: A beautifully machined, custom-built revolver. Used when there is no time for the Voight-Kampff test. Loads 5 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/deckard.rsi @@ -82,7 +82,7 @@ name: Inspector parent: [BaseWeaponRevolver, BaseSecurityContraband] id: WeaponRevolverInspector - description: A detective's best friend. Uses .45 magnum ammo. + description: A single-action revolver manufactured by various companies. It is readily available on the civilian market, making it a popular choice among private investigators. You feel lucky just holding it. Loads 6 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/inspector.rsi @@ -97,7 +97,7 @@ name: Mateba parent: [BaseWeaponRevolver, BaseMajorContraband] id: WeaponRevolverMateba - description: The iconic sidearm of the dreaded death squads. Uses .45 magnum ammo. + description: A modern revolver used by Nanotrasen’s elite, near mythical ‘Death Squad’ task force. Its unique trigger action and barrel placement enable a high fire rate with minimal muzzle flip. Many have looked down this barrel, but few have lived to tell of it. Loads 6 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/mateba.rsi @@ -120,7 +120,7 @@ name: Python parent: [BaseWeaponRevolver, BaseSyndicateContraband] id: WeaponRevolverPython - description: A robust revolver favoured by Syndicate agents. Uses .45 magnum ammo. + description: A powerful double-action revolver manufactured by the Syndicate. Loud and flashy, perfect for any agent looking to make a statement. Loads 6 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/python.rsi @@ -153,7 +153,7 @@ name: pirate revolver parent: [BaseWeaponRevolver, BaseMinorContraband] id: WeaponRevolverPirate - description: An odd, old-looking revolver, favoured by pirate crews. Uses .45 magnum ammo. + description: A crude single-action revolver handmade by a space pirate. Old and covered in rust, it somehow still works. Loads 5 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/pirate_revolver.rsi From b812045d64d847f7ceb60e902054ffb6ae3b1e57 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 11 Apr 2025 04:59:40 +0000 Subject: [PATCH 08/12] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b43f981127..1d39e71b2f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: slarticodefast - changes: - - message: Fixed space ambient music not playing. - type: Fix - id: 7656 - time: '2024-11-27T05:32:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33594 - author: slarticodefast changes: - message: Fixed windoors and high security doors not showing up on the AI's electrocution @@ -3890,3 +3883,11 @@ id: 8155 time: '2025-04-11T02:15:27.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/36385 +- author: Nox38, BurgerMoth, ArtisticRoomba + changes: + - message: Added descriptions to all .45 magnum cartridges, magazines, speed loaders, + and ammo boxes. + type: Add + id: 8156 + time: '2025-04-11T04:58:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36383 From 1540880eb20957c4a5a0e12ca6906ca14aed041e Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Fri, 11 Apr 2025 01:19:48 -0400 Subject: [PATCH 09/12] Predict Labels (#36406) * Predict Labels * nitpicks --- .../Labels/EntitySystems/LabelSystem.cs | 7 - .../Botany/Systems/PlantHolderSystem.cs | 5 +- .../Cargo/Systems/CargoSystem.Bounty.cs | 2 +- .../Cargo/Systems/CargoSystem.Orders.cs | 2 +- .../Cartridges/LogProbeCartridgeSystem.cs | 2 +- .../EntitySystems/ChemMasterSystem.cs | 2 +- .../Cloning/CloningSystem.Subscriptions.cs | 2 +- Content.Server/Delivery/DeliverySystem.cs | 2 +- Content.Server/Fax/FaxSystem.cs | 2 +- .../Forensics/Systems/ForensicPadSystem.cs | 2 +- .../Label/Components/PaperLabelComponent.cs | 14 -- Content.Server/Labels/Label/LabelSystem.cs | 115 -------------- Content.Server/Salvage/SalvageSystem.cs | 2 +- .../Shuttles/Commands/FTLDiskCommand.cs | 2 +- .../Labels/Components/LabelComponent.cs | 2 + .../Labels/Components/PaperLabelComponent.cs | 19 +++ .../Components/PaperLabelTypeComponent.cs | 12 +- .../Labels/EntitySystems/LabelSystem.cs | 144 ++++++++++++++++++ .../EntitySystems/SharedHandLabelerSystem.cs | 2 +- .../Labels/EntitySystems/SharedLabelSystem.cs | 54 ------- 20 files changed, 185 insertions(+), 209 deletions(-) delete mode 100644 Content.Client/Labels/EntitySystems/LabelSystem.cs delete mode 100644 Content.Server/Labels/Label/Components/PaperLabelComponent.cs delete mode 100644 Content.Server/Labels/Label/LabelSystem.cs create mode 100644 Content.Shared/Labels/Components/PaperLabelComponent.cs create mode 100644 Content.Shared/Labels/EntitySystems/LabelSystem.cs delete mode 100644 Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs diff --git a/Content.Client/Labels/EntitySystems/LabelSystem.cs b/Content.Client/Labels/EntitySystems/LabelSystem.cs deleted file mode 100644 index baa9f7fee7..0000000000 --- a/Content.Client/Labels/EntitySystems/LabelSystem.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Content.Shared.Labels.EntitySystems; - -namespace Content.Client.Labels; - -public sealed partial class LabelSystem : SharedLabelSystem -{ -} diff --git a/Content.Server/Botany/Systems/PlantHolderSystem.cs b/Content.Server/Botany/Systems/PlantHolderSystem.cs index 5dbafae5af..2661ed479c 100644 --- a/Content.Server/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Server/Botany/Systems/PlantHolderSystem.cs @@ -22,10 +22,10 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; -using Content.Server.Labels.Components; using Content.Shared.Administration.Logs; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; +using Content.Shared.Labels.Components; namespace Content.Server.Botany.Systems; @@ -45,8 +45,7 @@ public sealed class PlantHolderSystem : EntitySystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly ItemSlotsSystem _itemSlots = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - - + public const float HydroponicsSpeedMultiplier = 1f; public const float HydroponicsConsumptionMultiplier = 2f; diff --git a/Content.Server/Cargo/Systems/CargoSystem.Bounty.cs b/Content.Server/Cargo/Systems/CargoSystem.Bounty.cs index 7f74fe269d..c938c6fa50 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Bounty.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Bounty.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Cargo.Components; -using Content.Server.Labels; using Content.Server.NameIdentifier; using Content.Shared.Access.Components; using Content.Shared.Cargo; @@ -9,6 +8,7 @@ using Content.Shared.Cargo.Components; using Content.Shared.Cargo.Prototypes; using Content.Shared.Database; using Content.Shared.IdentityManagement; +using Content.Shared.Labels.EntitySystems; using Content.Shared.NameIdentifier; using Content.Shared.Paper; using Content.Shared.Stacks; diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index 9b6407c689..ee6526c321 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -1,6 +1,5 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Cargo.Components; -using Content.Server.Labels.Components; using Content.Server.Station.Components; using Content.Shared.Cargo; using Content.Shared.Cargo.BUI; @@ -11,6 +10,7 @@ using Content.Shared.Database; using Content.Shared.Emag.Systems; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; +using Content.Shared.Labels.Components; using Content.Shared.Paper; using Robust.Shared.Map; using Robust.Shared.Prototypes; diff --git a/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs b/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs index ac5c0baa54..75b6b44636 100644 --- a/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs +++ b/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs @@ -23,7 +23,7 @@ public sealed class LogProbeCartridgeSystem : EntitySystem [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; - [Dependency] private readonly SharedLabelSystem _label = default!; + [Dependency] private readonly LabelSystem _label = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly PaperSystem _paper = default!; diff --git a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs index dd97bfa8f6..6e2e2a91bc 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Chemistry.Components; -using Content.Server.Labels; using Content.Server.Popups; using Content.Server.Storage.EntitySystems; using Content.Shared.Administration.Logs; @@ -10,6 +9,7 @@ using Content.Shared.Chemistry.Reagent; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; using Content.Shared.FixedPoint; +using Content.Shared.Labels.EntitySystems; using Content.Shared.Storage; using JetBrains.Annotations; using Robust.Server.Audio; diff --git a/Content.Server/Cloning/CloningSystem.Subscriptions.cs b/Content.Server/Cloning/CloningSystem.Subscriptions.cs index 659d9a1ea1..eba806ceb8 100644 --- a/Content.Server/Cloning/CloningSystem.Subscriptions.cs +++ b/Content.Server/Cloning/CloningSystem.Subscriptions.cs @@ -25,7 +25,7 @@ namespace Content.Server.Cloning; public sealed partial class CloningSystem : EntitySystem { [Dependency] private readonly SharedStackSystem _stack = default!; - [Dependency] private readonly SharedLabelSystem _label = default!; + [Dependency] private readonly LabelSystem _label = default!; [Dependency] private readonly ForensicsSystem _forensics = default!; [Dependency] private readonly PaperSystem _paper = default!; diff --git a/Content.Server/Delivery/DeliverySystem.cs b/Content.Server/Delivery/DeliverySystem.cs index 8ac8722821..8d2052733e 100644 --- a/Content.Server/Delivery/DeliverySystem.cs +++ b/Content.Server/Delivery/DeliverySystem.cs @@ -23,7 +23,7 @@ public sealed partial class DeliverySystem : SharedDeliverySystem [Dependency] private readonly StationRecordsSystem _records = default!; [Dependency] private readonly StationSystem _station = default!; [Dependency] private readonly FingerprintReaderSystem _fingerprintReader = default!; - [Dependency] private readonly SharedLabelSystem _label = default!; + [Dependency] private readonly LabelSystem _label = default!; [Dependency] private readonly SharedContainerSystem _container = default!; public override void Initialize() diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index 180689f892..1ac7bd23ca 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -4,7 +4,6 @@ using Content.Server.Chat.Managers; using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; -using Content.Server.Labels; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Tools; @@ -20,6 +19,7 @@ using Content.Shared.Fax.Systems; using Content.Shared.Fax.Components; using Content.Shared.Interaction; using Content.Shared.Labels.Components; +using Content.Shared.Labels.EntitySystems; using Content.Shared.Mobs.Components; using Content.Shared.Paper; using Robust.Server.GameObjects; diff --git a/Content.Server/Forensics/Systems/ForensicPadSystem.cs b/Content.Server/Forensics/Systems/ForensicPadSystem.cs index 846d72a9fa..2841f36b00 100644 --- a/Content.Server/Forensics/Systems/ForensicPadSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicPadSystem.cs @@ -1,4 +1,3 @@ -using Content.Server.Labels; using Content.Server.Popups; using Content.Shared.DoAfter; using Content.Shared.Examine; @@ -7,6 +6,7 @@ using Content.Shared.Forensics.Components; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Inventory; +using Content.Shared.Labels.EntitySystems; namespace Content.Server.Forensics { diff --git a/Content.Server/Labels/Label/Components/PaperLabelComponent.cs b/Content.Server/Labels/Label/Components/PaperLabelComponent.cs deleted file mode 100644 index 5dead98084..0000000000 --- a/Content.Server/Labels/Label/Components/PaperLabelComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Content.Shared.Containers.ItemSlots; - -namespace Content.Server.Labels.Components -{ - /// - /// This component allows you to attach and remove a piece of paper to an entity. - /// - [RegisterComponent] - public sealed partial class PaperLabelComponent : Component - { - [DataField("labelSlot")] - public ItemSlot LabelSlot = new(); - } -} diff --git a/Content.Server/Labels/Label/LabelSystem.cs b/Content.Server/Labels/Label/LabelSystem.cs deleted file mode 100644 index b70c004123..0000000000 --- a/Content.Server/Labels/Label/LabelSystem.cs +++ /dev/null @@ -1,115 +0,0 @@ -using Content.Server.Labels.Components; -using Content.Shared.Containers.ItemSlots; -using Content.Shared.Examine; -using Content.Shared.Labels; -using Content.Shared.Labels.Components; -using Content.Shared.Labels.EntitySystems; -using Content.Shared.Paper; -using JetBrains.Annotations; -using Robust.Shared.Containers; - -namespace Content.Server.Labels -{ - /// - /// A system that lets players see the contents of a label on an object. - /// - [UsedImplicitly] - public sealed class LabelSystem : SharedLabelSystem - { - [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - - public const string ContainerName = "paper_label"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnComponentInit); - SubscribeLocalEvent(OnComponentRemove); - SubscribeLocalEvent(OnContainerModified); - SubscribeLocalEvent(OnContainerModified); - SubscribeLocalEvent(OnExamined); - } - - /// - /// Apply or remove a label on an entity. - /// - /// EntityUid to change label on - /// intended label text (null to remove) - /// label component for resolve - /// metadata component for resolve - public override void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null) - { - if (!Resolve(uid, ref label, false)) - label = EnsureComp(uid); - - label.CurrentLabel = text; - NameMod.RefreshNameModifiers(uid); - - Dirty(uid, label); - } - - private void OnComponentInit(EntityUid uid, PaperLabelComponent component, ComponentInit args) - { - _itemSlotsSystem.AddItemSlot(uid, ContainerName, component.LabelSlot); - - UpdateAppearance((uid, component)); - } - - private void OnComponentRemove(EntityUid uid, PaperLabelComponent component, ComponentRemove args) - { - _itemSlotsSystem.RemoveItemSlot(uid, component.LabelSlot); - } - - private void OnExamined(EntityUid uid, PaperLabelComponent comp, ExaminedEvent args) - { - if (comp.LabelSlot.Item is not {Valid: true} item) - return; - - using (args.PushGroup(nameof(PaperLabelComponent))) - { - if (!args.IsInDetailsRange) - { - args.PushMarkup(Loc.GetString("comp-paper-label-has-label-cant-read")); - return; - } - - if (!EntityManager.TryGetComponent(item, out PaperComponent? paper)) - // Assuming yaml has the correct entity whitelist, this should not happen. - return; - - if (string.IsNullOrWhiteSpace(paper.Content)) - { - args.PushMarkup(Loc.GetString("comp-paper-label-has-label-blank")); - return; - } - - args.PushMarkup(Loc.GetString("comp-paper-label-has-label")); - var text = paper.Content; - args.PushMarkup(text.TrimEnd()); - } - } - - private void OnContainerModified(EntityUid uid, PaperLabelComponent label, ContainerModifiedMessage args) - { - if (!label.Initialized) return; - - if (args.Container.ID != label.LabelSlot.ID) - return; - - UpdateAppearance((uid, label)); - } - - private void UpdateAppearance(Entity ent) - { - if (!Resolve(ent, ref ent.Comp2, false)) - return; - - var slot = ent.Comp1.LabelSlot; - _appearance.SetData(ent, PaperLabelVisuals.HasLabel, slot.HasItem, ent.Comp2); - if (TryComp(slot.Item, out var type)) - _appearance.SetData(ent, PaperLabelVisuals.LabelType, type.PaperType, ent.Comp2); - } - } -} diff --git a/Content.Server/Salvage/SalvageSystem.cs b/Content.Server/Salvage/SalvageSystem.cs index 9115c60536..53bb0c06b3 100644 --- a/Content.Server/Salvage/SalvageSystem.cs +++ b/Content.Server/Salvage/SalvageSystem.cs @@ -16,7 +16,7 @@ using Content.Shared.Construction.EntitySystems; using Robust.Shared.Audio.Systems; using Robust.Shared.Map.Components; using Robust.Shared.Timing; -using Content.Server.Labels; +using Content.Shared.Labels.EntitySystems; using Robust.Shared.EntitySerialization.Systems; namespace Content.Server.Salvage diff --git a/Content.Server/Shuttles/Commands/FTLDiskCommand.cs b/Content.Server/Shuttles/Commands/FTLDiskCommand.cs index b17c7c11a7..014dbe6d99 100644 --- a/Content.Server/Shuttles/Commands/FTLDiskCommand.cs +++ b/Content.Server/Shuttles/Commands/FTLDiskCommand.cs @@ -1,8 +1,8 @@ using Content.Server.Administration; -using Content.Server.Labels; using Content.Shared.Administration; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; +using Content.Shared.Labels.EntitySystems; using Content.Shared.Shuttles.Components; using Content.Shared.Storage; using Content.Shared.Storage.EntitySystems; diff --git a/Content.Shared/Labels/Components/LabelComponent.cs b/Content.Shared/Labels/Components/LabelComponent.cs index ee508797ad..d126e3bd3a 100644 --- a/Content.Shared/Labels/Components/LabelComponent.cs +++ b/Content.Shared/Labels/Components/LabelComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Labels.EntitySystems; using Robust.Shared.GameStates; namespace Content.Shared.Labels.Components; @@ -6,6 +7,7 @@ namespace Content.Shared.Labels.Components; /// Makes entities have a label in their name. Labels are normally given by /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(LabelSystem))] public sealed partial class LabelComponent : Component { /// diff --git a/Content.Shared/Labels/Components/PaperLabelComponent.cs b/Content.Shared/Labels/Components/PaperLabelComponent.cs new file mode 100644 index 0000000000..e8dad61b87 --- /dev/null +++ b/Content.Shared/Labels/Components/PaperLabelComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Labels.EntitySystems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Labels.Components; + +/// +/// This component allows you to attach and remove a piece of paper to an entity. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(LabelSystem))] +public sealed partial class PaperLabelComponent : Component +{ + /// + /// The slot where the label is stored. + /// + [DataField] + public ItemSlot LabelSlot = new(); +} diff --git a/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs b/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs index b045a6af3b..12cddad80f 100644 --- a/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs +++ b/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs @@ -1,15 +1,17 @@ +using Content.Shared.Labels.EntitySystems; using Robust.Shared.GameStates; namespace Content.Shared.Labels.Components; -/// -/// Specifies the paper type (see textures/storage/crates/labels.rsi to see currently supported paper types) to show on crates this label is attached to. -/// +/// +/// Specifies the paper type (see textures/storage/crates/labels.rsi to see currently supported paper types) to show on crates this label is attached to. +/// [RegisterComponent, NetworkedComponent] +[Access(typeof(LabelSystem))] public sealed partial class PaperLabelTypeComponent : Component { - /// - /// The type of label to show. + /// + /// The type of label to show. /// [DataField] public string PaperType = "Paper"; diff --git a/Content.Shared/Labels/EntitySystems/LabelSystem.cs b/Content.Shared/Labels/EntitySystems/LabelSystem.cs new file mode 100644 index 0000000000..569acc7bca --- /dev/null +++ b/Content.Shared/Labels/EntitySystems/LabelSystem.cs @@ -0,0 +1,144 @@ +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Examine; +using Content.Shared.Labels.Components; +using Content.Shared.NameModifier.EntitySystems; +using Content.Shared.Paper; +using Robust.Shared.Containers; +using Robust.Shared.Utility; + +namespace Content.Shared.Labels.EntitySystems; + +public sealed partial class LabelSystem : EntitySystem +{ + [Dependency] private readonly NameModifierSystem _nameModifier = default!; + [Dependency] private readonly ItemSlotsSystem _itemSlots = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + + public const string ContainerName = "paper_label"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnLabelCompMapInit); + SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnRefreshNameModifiers); + + SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnComponentRemove); + SubscribeLocalEvent(OnContainerModified); + SubscribeLocalEvent(OnContainerModified); + SubscribeLocalEvent(OnExamined); + } + + private void OnLabelCompMapInit(Entity ent, ref MapInitEvent args) + { + if (!string.IsNullOrEmpty(ent.Comp.CurrentLabel)) + { + ent.Comp.CurrentLabel = Loc.GetString(ent.Comp.CurrentLabel); + Dirty(ent); + } + + _nameModifier.RefreshNameModifiers(ent.Owner); + } + + /// + /// Apply or remove a label on an entity. + /// + /// EntityUid to change label on + /// intended label text (null to remove) + /// label component for resolve + /// metadata component for resolve + public void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null) + { + label ??= EnsureComp(uid); + + label.CurrentLabel = text; + _nameModifier.RefreshNameModifiers(uid); + + Dirty(uid, label); + } + + private void OnExamine(Entity ent, ref ExaminedEvent args) + { + if (!ent.Comp.Examinable) + return; + + if (ent.Comp.CurrentLabel == null) + return; + + var message = new FormattedMessage(); + message.AddText(Loc.GetString("hand-labeler-has-label", ("label", ent.Comp.CurrentLabel))); + args.PushMessage(message); + } + + private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args) + { + if (!string.IsNullOrEmpty(entity.Comp.CurrentLabel)) + args.AddModifier("comp-label-format", extraArgs: ("label", entity.Comp.CurrentLabel)); + } + + private void OnComponentInit(Entity ent, ref ComponentInit args) + { + _itemSlots.AddItemSlot(ent, ContainerName, ent.Comp.LabelSlot); + + UpdateAppearance(ent); + } + + private void OnComponentRemove(Entity ent, ref ComponentRemove args) + { + _itemSlots.RemoveItemSlot(ent, ent.Comp.LabelSlot); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + if (ent.Comp.LabelSlot.Item is not {Valid: true} item) + return; + + using (args.PushGroup(nameof(PaperLabelComponent))) + { + if (!args.IsInDetailsRange) + { + args.PushMarkup(Loc.GetString("comp-paper-label-has-label-cant-read")); + return; + } + + // Assuming yaml has the correct entity whitelist, this should not happen. + if (!TryComp(item, out var paper)) + return; + + if (string.IsNullOrWhiteSpace(paper.Content)) + { + args.PushMarkup(Loc.GetString("comp-paper-label-has-label-blank")); + return; + } + + args.PushMarkup(Loc.GetString("comp-paper-label-has-label")); + var text = paper.Content; + args.PushMarkup(text.TrimEnd()); + } + } + + // Not ref-sub due to being used for multiple subscriptions. + private void OnContainerModified(EntityUid uid, PaperLabelComponent label, ContainerModifiedMessage args) + { + if (!label.Initialized) + return; + + if (args.Container.ID != label.LabelSlot.ID) + return; + + UpdateAppearance((uid, label)); + } + + private void UpdateAppearance(Entity ent) + { + if (!Resolve(ent, ref ent.Comp2, false)) + return; + + var slot = ent.Comp1.LabelSlot; + _appearance.SetData(ent, PaperLabelVisuals.HasLabel, slot.HasItem, ent.Comp2); + if (TryComp(slot.Item, out var type)) + _appearance.SetData(ent, PaperLabelVisuals.LabelType, type.PaperType, ent.Comp2); + } +} diff --git a/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs index 0763bb101c..14abae70bb 100644 --- a/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs +++ b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs @@ -14,7 +14,7 @@ public abstract class SharedHandLabelerSystem : EntitySystem { [Dependency] protected readonly SharedUserInterfaceSystem UserInterfaceSystem = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly SharedLabelSystem _labelSystem = default!; + [Dependency] private readonly LabelSystem _labelSystem = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; diff --git a/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs b/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs deleted file mode 100644 index 8d54871563..0000000000 --- a/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Content.Shared.Examine; -using Content.Shared.Labels.Components; -using Content.Shared.NameModifier.EntitySystems; -using Robust.Shared.Utility; - -namespace Content.Shared.Labels.EntitySystems; - -public abstract partial class SharedLabelSystem : EntitySystem -{ - [Dependency] protected readonly NameModifierSystem NameMod = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnLabelCompMapInit); - SubscribeLocalEvent(OnExamine); - SubscribeLocalEvent(OnRefreshNameModifiers); - } - - private void OnLabelCompMapInit(EntityUid uid, LabelComponent component, MapInitEvent args) - { - if (!string.IsNullOrEmpty(component.CurrentLabel)) - { - component.CurrentLabel = Loc.GetString(component.CurrentLabel); - Dirty(uid, component); - } - - NameMod.RefreshNameModifiers(uid); - } - - public virtual void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null){} - - private void OnExamine(EntityUid uid, LabelComponent? label, ExaminedEvent args) - { - if (!Resolve(uid, ref label)) - return; - - if (!label.Examinable) - return; - - if (label.CurrentLabel == null) - return; - - var message = new FormattedMessage(); - message.AddText(Loc.GetString("hand-labeler-has-label", ("label", label.CurrentLabel))); - args.PushMessage(message); - } - - private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args) - { - if (!string.IsNullOrEmpty(entity.Comp.CurrentLabel)) - args.AddModifier("comp-label-format", extraArgs: ("label", entity.Comp.CurrentLabel)); - } -} From fd7413f51a9a24d75a43dfeeca37085bb3f0227f Mon Sep 17 00:00:00 2001 From: lunarcomets <140772713+lunarcomets@users.noreply.github.com> Date: Fri, 11 Apr 2025 05:17:11 -0700 Subject: [PATCH 10/12] predict borg selection (#36430) do the thing --- Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs b/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs index 8c76fade8c..69a55dd38b 100644 --- a/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs +++ b/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs @@ -25,6 +25,6 @@ public sealed class BorgSelectTypeUserInterface : BoundUserInterface base.Open(); _menu = this.CreateWindow(); - _menu.ConfirmedBorgType += prototype => SendMessage(new BorgSelectTypeMessage(prototype)); + _menu.ConfirmedBorgType += prototype => SendPredictedMessage(new BorgSelectTypeMessage(prototype)); } } From dc37ab7c6d1a8fac0f7a421da98f33eab2e6dc12 Mon Sep 17 00:00:00 2001 From: TakoDragon <69509841+BackeTako@users.noreply.github.com> Date: Fri, 11 Apr 2025 15:13:17 +0200 Subject: [PATCH 11/12] RD Windoor (#36377) rd-windoor --- .../Entities/Structures/Doors/Windoors/windoor.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/windoor.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/windoor.yml index db0fc13b97..d5cb9f1feb 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/windoor.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/windoor.yml @@ -407,6 +407,15 @@ - type: Wires layoutId: AirlockMedical +- type: entity + parent: WindoorSecureCommandLocked + id: WindoorSecureResearchDirectorLocked + suffix: ResearchDirector, Locked + components: + - type: ContainerFill + containers: + board: [ DoorElectronicsResearchDirector ] + - type: entity parent: WindoorSecureCargoLocked id: WindoorSecureSalvageLocked From 3a6441932eb5c4923231f97dd202c877b7e03664 Mon Sep 17 00:00:00 2001 From: Milon Date: Fri, 11 Apr 2025 17:33:32 +0200 Subject: [PATCH 12/12] Directional BoundUserInterfaceMessageAttempt content edition (#36320) --- .../Interaction/SharedInteractionSystem.cs | 13 +++++-------- .../StationAi/SharedStationAiSystem.Held.cs | 4 ++-- .../Storage/EntitySystems/SharedStorageSystem.cs | 4 ++-- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index ff9f41e1f9..9a2706d8a0 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -106,7 +106,7 @@ namespace Content.Shared.Interaction _uiQuery = GetEntityQuery(); SubscribeLocalEvent(HandleUserInterfaceRangeCheck); - SubscribeLocalEvent(OnBoundInterfaceInteractAttempt); + SubscribeLocalEvent(OnBoundInterfaceInteractAttempt); SubscribeAllEvent(HandleInteractInventorySlotEvent); @@ -151,13 +151,12 @@ namespace Content.Shared.Interaction /// /// Check that the user that is interacting with the BUI is capable of interacting and can access the entity. /// - private void OnBoundInterfaceInteractAttempt(BoundUserInterfaceMessageAttempt ev) + private void OnBoundInterfaceInteractAttempt(Entity ent, ref BoundUserInterfaceMessageAttempt ev) { - _uiQuery.TryComp(ev.Target, out var uiComp); if (!_actionBlockerSystem.CanInteract(ev.Actor, ev.Target)) { // We permit ghosts to open uis unless explicitly blocked - if (ev.Message is not OpenBoundInterfaceMessage || !HasComp(ev.Actor) || uiComp?.BlockSpectators == true) + if (ev.Message is not OpenBoundInterfaceMessage || !HasComp(ev.Actor) || ent.Comp.BlockSpectators) { ev.Cancel(); return; @@ -175,16 +174,14 @@ namespace Content.Shared.Interaction return; } - if (uiComp == null) - return; - if (uiComp.SingleUser && uiComp.CurrentSingleUser != null && uiComp.CurrentSingleUser != ev.Actor) + if (ent.Comp.SingleUser && ent.Comp.CurrentSingleUser != null && ent.Comp.CurrentSingleUser != ev.Actor) { ev.Cancel(); return; } - if (uiComp.RequiresComplex && !_actionBlockerSystem.CanComplexInteract(ev.Actor)) + if (ent.Comp.RequiresComplex && !_actionBlockerSystem.CanComplexInteract(ev.Actor)) ev.Cancel(); } diff --git a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs index 374d9b8cbf..4b0fbdcf4b 100644 --- a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs +++ b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs @@ -20,7 +20,7 @@ public abstract partial class SharedStationAiSystem private void InitializeHeld() { SubscribeLocalEvent(OnRadialMessage); - SubscribeLocalEvent(OnMessageAttempt); + SubscribeLocalEvent(OnMessageAttempt); SubscribeLocalEvent>(OnTargetVerbs); SubscribeLocalEvent(OnHeldInteraction); @@ -116,7 +116,7 @@ public abstract partial class SharedStationAiSystem RaiseLocalEvent(target.Value, (object) ev.Event); } - private void OnMessageAttempt(BoundUserInterfaceMessageAttempt ev) + private void OnMessageAttempt(Entity ent, ref BoundUserInterfaceMessageAttempt ev) { if (ev.Actor == ev.Target) return; diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index 9297ea043d..f2a2031743 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -142,7 +142,7 @@ public abstract class SharedStorageSystem : EntitySystem SubscribeLocalEvent(OnImplantActivate); SubscribeLocalEvent(AfterInteract); SubscribeLocalEvent(OnDestroy); - SubscribeLocalEvent(OnBoundUIAttempt); + SubscribeLocalEvent(OnBoundUIAttempt); SubscribeLocalEvent(OnBoundUIOpen); SubscribeLocalEvent(OnLockToggled); SubscribeLocalEvent(OnStackCountChanged); @@ -761,7 +761,7 @@ public abstract class SharedStorageSystem : EntitySystem UpdateAppearance((ent.Owner, ent.Comp, null)); } - private void OnBoundUIAttempt(BoundUserInterfaceMessageAttempt args) + private void OnBoundUIAttempt(Entity ent, ref BoundUserInterfaceMessageAttempt args) { if (args.UiKey is not StorageComponent.StorageUiKey.Key || _openStorageLimit == -1 ||