From 4cf14211f9c6caa38b943acedcb98e12e1f2a5eb Mon Sep 17 00:00:00 2001 From: Radezolid Date: Tue, 1 Apr 2025 18:55:43 -0300 Subject: [PATCH 01/19] Move medical locker fills to entityTables (#36249) * Added tables + moved things to EntityTableContainerFill * YAML convention --- .../Catalog/Fills/Lockers/medical.yml | 233 +++++++++--------- 1 file changed, 115 insertions(+), 118 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml index 65c8d5ccea..7d9fe7fb59 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml @@ -1,74 +1,79 @@ -- type: entity - id: LockerMedicineFilled - suffix: Filled - parent: LockerMedicine - components: - - type: StorageFill - contents: - - id: BoxSyringe - - id: ChemistryBottleEpinephrine - amount: 1 - - id: Brutepack - amount: 2 - - id: Ointment - amount: 2 - - id: Bloodpack - amount: 2 - - id: Gauze +- type: entityTable + id: LockerFillMedicine + table: !type:AllSelector + children: + - id: BoxSyringe + - id: ChemistryBottleEpinephrine + - id: Brutepack + amount: !type:ConstantNumberSelector + value: 2 + - id: Ointment + amount: !type:ConstantNumberSelector + value: 2 + - id: Bloodpack + amount: !type:ConstantNumberSelector + value: 2 + - id: Gauze - type: entity + parent: LockerMedicine + id: LockerMedicineFilled + suffix: Filled + components: + - type: EntityTableContainerFill + containers: + entity_storage: !type:NestedSelector + tableId: LockerFillMedicine + +- type: entity + parent: LockerWallMedical id: LockerWallMedicalFilled name: medicine wall locker suffix: Filled - parent: LockerWallMedical components: - - type: StorageFill - contents: - - id: BoxSyringe - - id: ChemistryBottleEpinephrine - amount: 1 - - id: Brutepack - amount: 2 - - id: Ointment - amount: 2 - - id: Bloodpack - amount: 2 - - id: Gauze + - type: EntityTableContainerFill + containers: + entity_storage: !type:NestedSelector + tableId: LockerFillMedicine +- type: entityTable + id: LockerFillMedicalDoctor + table: !type:AllSelector + children: + - id: HandheldHealthAnalyzer + prob: 0.6 + - id: ClothingHeadMirror + prob: 0.1 + - id: ClothingHandsGlovesLatex + - id: ClothingHeadsetMedical + - id: ClothingEyesHudMedical + - !type:GroupSelector + children: + - id: ClothingHeadHatSurgcapGreen + weight: 0.1 + - id: ClothingHeadHatSurgcapPurple + weight: 0.05 + - id: ClothingHeadHatSurgcapBlue + weight: 0.90 + - !type:GroupSelector + children: + - id: UniformScrubsColorBlue + weight: 0.5 + - id: UniformScrubsColorGreen + weight: 0.1 + - id: UniformScrubsColorPurple + weight: 0.05 + - id: ClothingMaskSterile - type: entity + parent: LockerMedical id: LockerMedicalFilled suffix: Filled - parent: LockerMedical components: - - type: StorageFill - contents: - - id: HandheldHealthAnalyzer - prob: 0.6 - - id: ClothingHeadMirror - prob: 0.1 - - id: ClothingHandsGlovesLatex - - id: ClothingHeadsetMedical - - id: ClothingEyesHudMedical - - id: ClothingHeadHatSurgcapGreen - prob: 0.1 - orGroup: Surgcaps - - id: ClothingHeadHatSurgcapPurple - prob: 0.05 - orGroup: Surgcaps - - id: ClothingHeadHatSurgcapBlue - prob: 0.90 - orGroup: Surgcaps - - id: UniformScrubsColorBlue - prob: 0.5 - orGroup: Surgshrubs - - id: UniformScrubsColorGreen - prob: 0.1 - orGroup: Surgshrubs - - id: UniformScrubsColorPurple - prob: 0.05 - orGroup: Surgshrubs - - id: ClothingMaskSterile + - type: EntityTableContainerFill + containers: + entity_storage: !type:NestedSelector + tableId: LockerFillMedicalDoctor - type: entity parent: LockerWallMedical @@ -76,72 +81,64 @@ name: medical doctor's wall locker suffix: Filled components: - - type: StorageFill - contents: - - id: HandheldHealthAnalyzer - prob: 0.6 - - id: ClothingHandsGlovesLatex - - id: ClothingHeadsetMedical - - id: ClothingEyesHudMedical - - id: ClothingHeadHatSurgcapGreen - prob: 0.1 - orGroup: Surgcaps - - id: ClothingHeadHatSurgcapPurple - prob: 0.05 - orGroup: Surgcaps - - id: ClothingHeadHatSurgcapBlue - prob: 0.90 - orGroup: Surgcaps - - id: UniformScrubsColorBlue - prob: 0.5 - orGroup: Surgshrubs - - id: UniformScrubsColorGreen - prob: 0.1 - orGroup: Surgshrubs - - id: UniformScrubsColorPurple - prob: 0.05 - orGroup: Surgshrubs - - id: ClothingMaskSterile + - type: EntityTableContainerFill + containers: + entity_storage: !type:NestedSelector + tableId: LockerFillMedicalDoctor + +- type: entityTable + id: LockerFillChemistry + table: !type:AllSelector + children: + - id: BoxSyringe + - id: BoxBeaker + - id: BoxBeaker + prob: 0.3 + - id: BoxPillCanister + - id: BoxBottle + - id: BoxVial + - id: PlasmaChemistryVial + - id: ChemBag + - id: ClothingHandsGlovesLatex + - id: ClothingHeadsetMedical + - id: ClothingMaskSterile + - id: HandLabeler + prob: 0.5 - type: entity + parent: LockerChemistry id: LockerChemistryFilled suffix: Filled - parent: LockerChemistry components: - - type: StorageFill - contents: - - id: BoxSyringe - - id: BoxBeaker - - id: BoxBeaker - prob: 0.3 - - id: BoxPillCanister - - id: BoxBottle - - id: BoxVial - - id: PlasmaChemistryVial - - id: ChemBag - - id: ClothingHandsGlovesLatex - - id: ClothingHeadsetMedical - - id: ClothingMaskSterile - - id: HandLabeler - prob: 0.5 + - type: EntityTableContainerFill + containers: + entity_storage: !type:NestedSelector + tableId: LockerFillChemistry + +- type: entityTable + id: LockerFillParamedic + table: !type:AllSelector + children: + - id: ClothingOuterHardsuitVoidParamed + - id: ClothingOuterCoatParamedicWB + - id: ClothingHeadHatParamedicsoft + - id: ClothingOuterWinterPara + - id: ClothingUniformJumpsuitParamedic + - id: ClothingUniformJumpskirtParamedic + - id: ClothingEyesHudMedical + - id: ClothingHandsGlovesLatex + - id: ClothingHeadsetMedical + - id: ClothingMaskSterile + - id: HandheldGPSBasic + - id: MedkitFilled + prob: 0.3 - type: entity + parent: LockerParamedic id: LockerParamedicFilled suffix: Filled - parent: LockerParamedic components: - - type: StorageFill - contents: - - id: ClothingOuterHardsuitVoidParamed - - id: ClothingOuterCoatParamedicWB - - id: ClothingHeadHatParamedicsoft - - id: ClothingOuterWinterPara - - id: ClothingUniformJumpsuitParamedic - - id: ClothingUniformJumpskirtParamedic - - id: ClothingEyesHudMedical - - id: ClothingHandsGlovesLatex - - id: ClothingHeadsetMedical - - id: ClothingMaskSterile - - id: HandheldGPSBasic - - id: MedkitFilled - prob: 0.3 + - type: EntityTableContainerFill + containers: + entity_storage: !type:NestedSelector + tableId: LockerFillParamedic From 3192a7fde52c435f443cc6c49426d96c39c59f0a Mon Sep 17 00:00:00 2001 From: J Date: Tue, 1 Apr 2025 21:56:37 +0000 Subject: [PATCH 02/19] Rotation warnings cleanup (#36197) * Rotation warnings cleanup * Naming convention fix * Adding component that we already have --- Content.Client/Rotation/RotationVisualizerSystem.cs | 2 +- Content.Server/Rotatable/RotatableSystem.cs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Client/Rotation/RotationVisualizerSystem.cs b/Content.Client/Rotation/RotationVisualizerSystem.cs index 6d3be4d1c0..8dbcf97320 100644 --- a/Content.Client/Rotation/RotationVisualizerSystem.cs +++ b/Content.Client/Rotation/RotationVisualizerSystem.cs @@ -52,7 +52,7 @@ public sealed class RotationVisualizerSystem : SharedRotationVisualsSystem // Stop the current rotate animation and then start a new one if (_animation.HasRunningAnimation(animationComp, animationKey)) { - _animation.Stop(animationComp, animationKey); + _animation.Stop((uid, animationComp), animationKey); } var animation = new Animation diff --git a/Content.Server/Rotatable/RotatableSystem.cs b/Content.Server/Rotatable/RotatableSystem.cs index 63b5e44c3d..85681535ca 100644 --- a/Content.Server/Rotatable/RotatableSystem.cs +++ b/Content.Server/Rotatable/RotatableSystem.cs @@ -21,6 +21,7 @@ namespace Content.Server.Rotatable [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; public override void Initialize() { @@ -112,7 +113,7 @@ namespace Content.Server.Rotatable var entity = EntityManager.SpawnEntity(component.MirrorEntity, oldTransform.Coordinates); var newTransform = EntityManager.GetComponent(entity); newTransform.LocalRotation = oldTransform.LocalRotation; - newTransform.Anchored = false; + _transform.Unanchor(entity, newTransform); EntityManager.DeleteEntity(uid); } From 899d318f012c4b67c4123676c2b321bbaa48b1ce Mon Sep 17 00:00:00 2001 From: MisterImp <101299120+MisterImp@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:26:53 -0400 Subject: [PATCH 03/19] New food recipe: World Peazza (#35191) * added world peazza * fixed a comma in the pizza sprite json * changed attribution comment on ArtisticRoomba's suggestion * restored accidentally deleted line, thanks Tayrtahn --- .../Random/Food_Drinks/food_single.yml | 1 + .../Objects/Consumable/Food/Baked/pizza.yml | 52 ++++++++++++++++++ .../Consumable/Food/Containers/box.yml | 3 + .../Recipes/Cooking/meal_recipes.yml | 9 +++ .../Consumable/Food/Baked/pizza.rsi/meta.json | 8 ++- .../Food/Baked/pizza.rsi/worldpeas-slice.png | Bin 0 -> 284 bytes .../Food/Baked/pizza.rsi/worldpeas.png | Bin 0 -> 422 bytes 7 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/worldpeas-slice.png create mode 100644 Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/worldpeas.png diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/food_single.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/food_single.yml index 4b7805c3d3..fda7b85b75 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/food_single.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/food_single.yml @@ -67,4 +67,5 @@ - FoodBurgerCrazy - FoodPizzaArnoldSlice - FoodPizzaUraniumSlice + - FoodPizzaWorldpeasSlice rareChance: 0.05 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml index 8f476f9263..9fe96a18a1 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml @@ -681,3 +681,55 @@ Quantity: 0.8 - ReagentId: Fiber Quantity: 1.5 + +- type: entity + name: world peazza + parent: FoodPizzaBase + id: FoodPizzaWorldpeas + description: Modern diplomacy in the shape of a disc. + components: + - type: FlavorProfile + flavors: + - bread + - numbingtranquility + - type: Sprite + layers: + - state: worldpeas + - type: SliceableFood + slice: FoodPizzaWorldpeasSlice + - type: SolutionContainerManager + solutions: + food: + maxVol: 45 + reagents: + - ReagentId: Nutriment + Quantity: 20 + - ReagentId: Happiness + Quantity: 12 + - ReagentId: Pax + Quantity: 8 + +- type: entity + name: slice of world peazza + parent: FoodPizzaSliceBase + id: FoodPizzaWorldpeasSlice + description: Dividing the world up is a small price to pay for harmony. + components: + - type: FlavorProfile + flavors: + - bread + - numbingtranquility + - type: Sprite + layers: + - state: worldpeas-slice + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Nutriment + Quantity: 3.5 + - ReagentId: Happiness + Quantity: 2 + - ReagentId: Pax + Quantity: 1.5 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml index fe690d8bd1..7dd402ae6d 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml @@ -273,6 +273,9 @@ - id: FoodPizzaCotton prob: 0.10 orGroup: Pizza + - id: FoodPizzaWorldpeas + prob: 0.05 + orGroup: Pizza - id: KnifePlastic - type: entity diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index 2eeb3c392b..28a47fdc21 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -718,6 +718,15 @@ FoodDoughCottonFlat: 1 CottonBol: 4 +- type: microwaveMealRecipe + id: RecipeWorldpeasPizza + name: world peazza recipe + result: FoodPizzaWorldpeas + time: 30 + solids: + FoodDoughFlat: 1 + FoodWorldPeas: 3 + #Italian - type: microwaveMealRecipe id: RecipeBoiledSpaghetti diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/meta.json index 607a9cf8f3..1d7e8a01a5 100644 --- a/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation and modified by Swept at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, Spicy Rock Pizza modified from margherita pizza by mkanke, cotton made by mlexf (discord 1143460554963427380)", + "copyright": "Taken from tgstation and modified by Swept at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, Spicy Rock Pizza modified from margherita pizza by mkanke, cotton made by mlexf (discord 1143460554963427380), world peazza modified from margherita by MisterImp (GitHub)", "size": { "x": 32, "y": 32 @@ -149,6 +149,12 @@ }, { "name": "uranium-slice" + }, + { + "name": "worldpeas" + }, + { + "name": "worldpeas-slice" } ] } diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/worldpeas-slice.png b/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/worldpeas-slice.png new file mode 100644 index 0000000000000000000000000000000000000000..52216714bfcb7a1a950218af58d1236796fd659f GIT binary patch literal 284 zcmV+%0ptFOP)FswUW2#i7EAV*Tgau7H@%@FPYn86?nvJAwB zS&VEs$YKya*sDXCuvCq*R(cz77#I8N(Fwy}{ zEJk-kojt?<2P>Wb|G!-IzrQjUj6n{fN?a4`2#_y97-TUBuPrg9kLB1LLDL||2SDWl iRZ{pU7zLwXFaQAFfZsUr|2|#-0000d literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/worldpeas.png b/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/worldpeas.png new file mode 100644 index 0000000000000000000000000000000000000000..d521aa5c49866a8f2586a8fdeec5dc394ad0fad5 GIT binary patch literal 422 zcmV;X0a^ZuP)E!2b>4;qmt%A8XPNf6w%MMJgk! zGCH=YoQkU1?>wRwJ$;9ZY?BsIUC%cilyuAvP^qL%gS z-`+iwtLw*f8&Z&ilgDwaO*9(c82TYfb2~j~YiSNbvvd;-@ciM1c%9y{+@ zk6!BZWSqB+c5^{qn@fpEsDiD%8HtZ;a(^=MjX1-*)HKu{^!7ZphsU7s1+DB|dPnXt QjsO4v07*qoM6N<$f Date: Tue, 1 Apr 2025 23:28:01 +0000 Subject: [PATCH 04/19] 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 45ca1f71b9..3e4a0be541 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ScarKy0 - changes: - - message: Secret doors no longer tell you if they're welded shut on examine. - type: Tweak - id: 7622 - time: '2024-11-19T05:07:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33365 - author: ArZarLordOfMango changes: - message: Most toggleable clothing must now be equipped to toggle their actions. @@ -3900,3 +3893,10 @@ id: 8121 time: '2025-04-01T16:43:19.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/36241 +- author: MisterImp + changes: + - message: A new recipe has been added for pizza made with world peas, world peazza. + type: Add + id: 8122 + time: '2025-04-01T23:26:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35191 From 593a8fe86993cfd9e2f07bd4593e178374a62f55 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Tue, 1 Apr 2025 23:11:15 -0400 Subject: [PATCH 05/19] Fix KeyNotFoundException that sometimes happens on server shutdown (#36221) --- Content.Server/Mind/MindSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index 2447d88641..1b55a533e3 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -85,11 +85,11 @@ public sealed class MindSystem : SharedMindSystem { if (base.TryGetMind(user, out mindId, out mind)) { - DebugTools.Assert(_players.GetPlayerData(user).ContentData() is not { } data || data.Mind == mindId); + DebugTools.Assert(!_players.TryGetPlayerData(user, out var playerData) || playerData.ContentData() is not { } data || data.Mind == mindId); return true; } - DebugTools.Assert(_players.GetPlayerData(user).ContentData()?.Mind == null); + DebugTools.Assert(!_players.TryGetPlayerData(user, out var pData) || pData.ContentData()?.Mind == null); return false; } From 93df56ac164a5e21c1464e244329888361135e04 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Wed, 2 Apr 2025 01:40:49 -0400 Subject: [PATCH 06/19] Fix "other player points at you" message formatting (#36253) Fix "other player points at you" message's Fluent functions --- .../Locale/en-US/entity-systems/pointing/pointing-system.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl b/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl index 29f0fa27e2..be7b6196b2 100644 --- a/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl +++ b/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl @@ -5,6 +5,6 @@ pointing-system-point-at-self = You point at yourself. pointing-system-point-at-other = You point at {THE($other)}. pointing-system-point-at-self-others = {CAPITALIZE(THE($otherName))} points at {REFLEXIVE($other)}. pointing-system-point-at-other-others = {CAPITALIZE(THE($otherName))} points at {THE($other)}. -pointing-system-point-at-you-other = {$otherName} points at you. +pointing-system-point-at-you-other = {CAPITALIZE(THE($otherName))} points at you. pointing-system-point-at-tile = You point at the {$tileName}. pointing-system-other-point-at-tile = {CAPITALIZE(THE($otherName))} points at the {$tileName}. From 8548e062edd23a3dfd63de447a0e9ed8ebe4d937 Mon Sep 17 00:00:00 2001 From: Kirby <205904127+154942@users.noreply.github.com> Date: Wed, 2 Apr 2025 06:42:05 -0400 Subject: [PATCH 07/19] Light replacer description typo fix (#36256) Replacer description typo fix --- Resources/Prototypes/Entities/Objects/Tools/light_replacer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Tools/light_replacer.yml b/Resources/Prototypes/Entities/Objects/Tools/light_replacer.yml index 646f6a6378..34dcd66b71 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/light_replacer.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/light_replacer.yml @@ -2,7 +2,7 @@ parent: BaseItem name: light replacer id: LightReplacer - description: An item which uses magnets to easily replace broken lights. Refill By adding more lights into the replacer. + description: An item which uses magnets to easily replace broken lights. Refill by adding more lights into the replacer. components: - type: Sprite sprite: Objects/Specific/Janitorial/light_replacer.rsi From 3f8deb7aa4cb2d0b838ef5550b3e4da124438417 Mon Sep 17 00:00:00 2001 From: Fildrance Date: Wed, 2 Apr 2025 19:11:34 +0300 Subject: [PATCH 08/19] fix: re-add missing RCD deconstruct action #36243 (#36255) Co-authored-by: pa.pecherskij --- Resources/Prototypes/RCD/rcd.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Resources/Prototypes/RCD/rcd.yml b/Resources/Prototypes/RCD/rcd.yml index 88a99451cf..f476f06dc4 100644 --- a/Resources/Prototypes/RCD/rcd.yml +++ b/Resources/Prototypes/RCD/rcd.yml @@ -2,25 +2,25 @@ - type: rcd id: Invalid # Hidden prototype - do not add to RCDs mode: Invalid - + - type: rcd id: Deconstruct name: rcd-component-deconstruct - category: Main + category: WallsAndFlooring sprite: /Textures/Interface/Radial/RCD/deconstruct.png mode: Deconstruct prototype: EffectRCDDeconstructPreview rotation: Camera - type: rcd - id: DeconstructLattice # Hidden prototype - do not add to RCDs + id: DeconstructLattice # Hidden prototype - do not add to RCDs name: rcd-component-deconstruct mode: Deconstruct cost: 2 delay: 0 rotation: Camera fx: EffectRCDConstruct0 - + - type: rcd id: DeconstructTile # Hidden prototype - do not add to RCDs name: rcd-component-deconstruct @@ -30,7 +30,7 @@ rotation: Camera fx: EffectRCDDeconstruct4 -# Flooring +# Flooring - type: rcd id: Plating name: rcd-component-plating @@ -44,7 +44,7 @@ rules: - CanBuildOnEmptyTile fx: EffectRCDConstruct1 - + - type: rcd id: FloorSteel name: rcd-component-floor-steel @@ -80,7 +80,7 @@ category: WallsAndFlooring sprite: /Textures/Interface/Radial/RCD/solid_wall.png mode: ConstructObject - prototype: WallSolid + prototype: WallSolid cost: 4 delay: 2 collisionMask: FullTileMask @@ -113,7 +113,7 @@ - IsWindow rotation: Fixed fx: EffectRCDConstruct2 - + - type: rcd id: WindowDirectional category: WindowsAndGrilles @@ -128,7 +128,7 @@ - IsWindow rotation: User fx: EffectRCDConstruct1 - + - type: rcd id: ReinforcedWindow category: WindowsAndGrilles @@ -142,7 +142,7 @@ - IsWindow rotation: User fx: EffectRCDConstruct3 - + - type: rcd id: WindowReinforcedDirectional category: WindowsAndGrilles @@ -170,7 +170,7 @@ collisionMask: FullTileMask rotation: Camera fx: EffectRCDConstruct4 - + - type: rcd id: AirlockGlass category: Airlocks @@ -182,7 +182,7 @@ collisionMask: FullTileMask rotation: Camera fx: EffectRCDConstruct4 - + - type: rcd id: Firelock category: Airlocks @@ -208,7 +208,7 @@ collisionBounds: "-0.23,-0.49,0.23,-0.36" rotation: User fx: EffectRCDConstruct1 - + - type: rcd id: BulbLight category: Lighting @@ -235,7 +235,7 @@ - MustBuildOnSubfloor rotation: Fixed fx: EffectRCDConstruct0 - + - type: rcd id: MVCable category: Electrical @@ -248,7 +248,7 @@ - MustBuildOnSubfloor rotation: Fixed fx: EffectRCDConstruct0 - + - type: rcd id: HVCable category: Electrical @@ -261,7 +261,7 @@ - MustBuildOnSubfloor rotation: Fixed fx: EffectRCDConstruct0 - + - type: rcd id: CableTerminal category: Electrical From e920558bb6953ad08df54e9b96ae2dcdb58b79dc Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 2 Apr 2025 16:12:41 +0000 Subject: [PATCH 09/19] 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 3e4a0be541..0676e638cc 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ArZarLordOfMango - changes: - - message: Most toggleable clothing must now be equipped to toggle their actions. - type: Fix - id: 7623 - time: '2024-11-19T20:31:38.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32826 - author: Plykiya changes: - message: The SWAT crate from cargo now requires armory access to open. @@ -3900,3 +3893,10 @@ id: 8122 time: '2025-04-01T23:26:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35191 +- author: Fildrance + changes: + - message: fixed missing deconstruct on RCD + type: Fix + id: 8123 + time: '2025-04-02T16:11:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36255 From b204fd9b0e2e0264e532d7d20887f32dd24d83fe Mon Sep 17 00:00:00 2001 From: qwerltaz Date: Wed, 2 Apr 2025 20:37:34 +0200 Subject: [PATCH 10/19] add: Dragon rift color changes based on charge (#36216) * use dragon rift sprite colours * Entity --- Content.Server/Dragon/DragonRiftSystem.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Content.Server/Dragon/DragonRiftSystem.cs b/Content.Server/Dragon/DragonRiftSystem.cs index 998834835e..9cab018fd7 100644 --- a/Content.Server/Dragon/DragonRiftSystem.cs +++ b/Content.Server/Dragon/DragonRiftSystem.cs @@ -13,6 +13,7 @@ using Robust.Shared.Serialization.Manager; using System.Numerics; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; +using Robust.Shared.GameStates; using Robust.Shared.Utility; namespace Content.Server.Dragon; @@ -33,11 +34,20 @@ public sealed class DragonRiftSystem : EntitySystem { base.Initialize(); + SubscribeLocalEvent(OnGetState); SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnAnchorChange); SubscribeLocalEvent(OnShutdown); } + private void OnGetState(Entity ent, ref ComponentGetState args) + { + args.State = new DragonRiftComponentState + { + State = ent.Comp.State, + }; + } + public override void Update(float frameTime) { base.Update(frameTime); From b72a9170b0774116c931a39ecb1e6575ec27422b Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 2 Apr 2025 18:38:43 +0000 Subject: [PATCH 11/19] 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 0676e638cc..17ef3994ca 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Plykiya - changes: - - message: The SWAT crate from cargo now requires armory access to open. - type: Fix - id: 7624 - time: '2024-11-20T00:57:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33415 - author: SlamBamActionman changes: - message: It's no longer possible to drag an item out of a container's UI to drop @@ -3900,3 +3893,10 @@ id: 8123 time: '2025-04-02T16:11:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/36255 +- author: qwerltaz + changes: + - message: Dragon rifts now shine a different color depending on charge progress. + type: Add + id: 8124 + time: '2025-04-02T18:37:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36216 From 933984fe6f78f276f42074cd4d72a9e7f2488b95 Mon Sep 17 00:00:00 2001 From: Vasilis The Pikachu Date: Wed, 2 Apr 2025 23:54:20 +0200 Subject: [PATCH 12/19] :3 This is so we can publish stable again From 7f781e7bdad2196b9800b5fd6e81065ba42e95d6 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Wed, 2 Apr 2025 19:26:36 -0400 Subject: [PATCH 13/19] Convert AgentIDCard message to use a Fluent selector (#36263) Convert AgentIDCard message to use a selector --- .../Access/Systems/AgentIDCardSystem.cs | 16 ++-------------- .../components/agent-id-card-component.ftl | 9 ++++++--- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/Content.Server/Access/Systems/AgentIDCardSystem.cs b/Content.Server/Access/Systems/AgentIDCardSystem.cs index a38aefce93..9ede128a5a 100644 --- a/Content.Server/Access/Systems/AgentIDCardSystem.cs +++ b/Content.Server/Access/Systems/AgentIDCardSystem.cs @@ -42,21 +42,9 @@ namespace Content.Server.Access.Systems access.Tags.UnionWith(targetAccess.Tags); var addedLength = access.Tags.Count - beforeLength; - if (addedLength == 0) - { - _popupSystem.PopupEntity(Loc.GetString("agent-id-no-new", ("card", args.Target)), args.Target.Value, args.User); - return; - } - - Dirty(uid, access); - - if (addedLength == 1) - { - _popupSystem.PopupEntity(Loc.GetString("agent-id-new-1", ("card", args.Target)), args.Target.Value, args.User); - return; - } - _popupSystem.PopupEntity(Loc.GetString("agent-id-new", ("number", addedLength), ("card", args.Target)), args.Target.Value, args.User); + if (addedLength > 0) + Dirty(uid, access); } private void AfterUIOpen(EntityUid uid, AgentIDCardComponent component, AfterActivatableUIOpenEvent args) diff --git a/Resources/Locale/en-US/access/components/agent-id-card-component.ftl b/Resources/Locale/en-US/access/components/agent-id-card-component.ftl index 17a92f6012..5e1e3cd7cf 100644 --- a/Resources/Locale/en-US/access/components/agent-id-card-component.ftl +++ b/Resources/Locale/en-US/access/components/agent-id-card-component.ftl @@ -1,6 +1,9 @@ -agent-id-no-new = Didn't gain any new accesses from {THE($card)}. -agent-id-new-1 = Gained one new access from {THE($card)}. -agent-id-new = Gained {$number} new accesses from {THE($card)}. +agent-id-new = { $number -> + [0] Didn't gain any new accesses from {THE($card)}. + [one] Gained one new access from {THE($card)}. + *[other] Gained {$number} new accesses from {THE($card)}. +} + agent-id-card-current-name = Name: agent-id-card-current-job = Job: agent-id-card-job-icon-label = Job icon: From 7e4cf87820e63b103df93a793b3ddecec7468316 Mon Sep 17 00:00:00 2001 From: J Date: Thu, 3 Apr 2025 00:12:25 +0000 Subject: [PATCH 14/19] NPC Warnings cleanup (#36189) * NPC Warnings cleanup * Reverting unnecessary changes * Reverting unnecessary changes, missed * Using entity GetGrid override instead --- .../NPC/HTN/PrimitiveTasks/Operators/MoveToOperator.cs | 6 +++--- Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs | 8 ++------ Content.Server/NPC/Systems/NPCSteeringSystem.cs | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/MoveToOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/MoveToOperator.cs index e64343fdd8..aeedb326e9 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/MoveToOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/MoveToOperator.cs @@ -86,7 +86,7 @@ public sealed partial class MoveToOperator : HTNOperator, IHtnConditionalShutdow return (false, null); if (!_entManager.TryGetComponent(xform.GridUid, out var ownerGrid) || - !_entManager.TryGetComponent(targetCoordinates.GetGridUid(_entManager), out var targetGrid)) + !_entManager.TryGetComponent(_transform.GetGrid(targetCoordinates), out var targetGrid)) { return (false, null); } @@ -155,8 +155,8 @@ public sealed partial class MoveToOperator : HTNOperator, IHtnConditionalShutdow { if (blackboard.TryGetValue(NPCBlackboard.OwnerCoordinates, out var coordinates, _entManager)) { - var mapCoords = coordinates.ToMap(_entManager, _transform); - _steering.PrunePath(uid, mapCoords, targetCoordinates.ToMapPos(_entManager, _transform) - mapCoords.Position, result.Path); + var mapCoords = _transform.ToMapCoordinates(coordinates); + _steering.PrunePath(uid, mapCoords, _transform.ToMapCoordinates(targetCoordinates).Position - mapCoords.Position, result.Path); } comp.CurrentPath = new Queue(result.Path); diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs index f4af65c617..7105bda0a2 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs @@ -2,10 +2,6 @@ using System.Diagnostics.CodeAnalysis; using System.Numerics; using System.Threading; using System.Threading.Tasks; -using Content.Server.Destructible; -using Content.Shared.Access.Components; -using Content.Shared.Climbing.Components; -using Content.Shared.Doors.Components; using Content.Shared.NPC; using Content.Shared.Physics; using Robust.Shared.Collections; @@ -281,7 +277,7 @@ public sealed partial class PathfindingSystem var gridUid = ev.Component.GridUid; var oldGridUid = ev.OldPosition.EntityId == ev.NewPosition.EntityId ? gridUid - : ev.OldPosition.GetGridUid(EntityManager); + : _transform.GetGrid((ev.Entity.Owner, ev.Component)); if (oldGridUid != null && oldGridUid != gridUid) { @@ -395,7 +391,7 @@ public sealed partial class PathfindingSystem private Vector2i GetOrigin(EntityCoordinates coordinates, EntityUid gridUid) { - var localPos = Vector2.Transform(coordinates.ToMapPos(EntityManager, _transform), _transform.GetInvWorldMatrix(gridUid)); + var localPos = Vector2.Transform(_transform.ToMapCoordinates(coordinates).Position, _transform.GetInvWorldMatrix(gridUid)); return new Vector2i((int) Math.Floor(localPos.X / ChunkSize), (int) Math.Floor(localPos.Y / ChunkSize)); } diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.cs index a8124c0249..78610be77e 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.cs @@ -461,7 +461,7 @@ public sealed partial class NPCSteeringSystem : SharedNPCSteeringSystem return; } - var targetPos = steering.Coordinates.ToMap(EntityManager, _transform); + var targetPos = _transform.ToMapCoordinates(steering.Coordinates); var ourPos = _transform.GetMapCoordinates(uid, xform: xform); PrunePath(uid, ourPos, targetPos.Position - ourPos.Position, result.Path); From bb864f2b5693d1cd1f7be99e381036f1deac901b Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Wed, 2 Apr 2025 22:02:09 -0400 Subject: [PATCH 15/19] Fix entities burning to ash not using identity, and bad formatting (#36268) * Make burning to ash use identity * CAPITALIZE(THE()) --- .../Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs | 4 +++- Resources/Locale/en-US/burning/bodyburn.ftl | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs index f0499dc6a2..1d3c1993f9 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs @@ -1,4 +1,5 @@ using Content.Shared.Body.Components; +using Content.Shared.IdentityManagement; using Content.Shared.Inventory; using Content.Shared.Popups; using JetBrains.Annotations; @@ -25,7 +26,8 @@ public sealed partial class BurnBodyBehavior : IThresholdBehavior } } - sharedPopupSystem.PopupCoordinates(Loc.GetString("bodyburn-text-others", ("name", bodyId)), transformSystem.GetMoverCoordinates(bodyId), PopupType.LargeCaution); + var bodyIdentity = Identity.Entity(bodyId, system.EntityManager); + sharedPopupSystem.PopupCoordinates(Loc.GetString("bodyburn-text-others", ("name", bodyIdentity)), transformSystem.GetMoverCoordinates(bodyId), PopupType.LargeCaution); system.EntityManager.QueueDeleteEntity(bodyId); } diff --git a/Resources/Locale/en-US/burning/bodyburn.ftl b/Resources/Locale/en-US/burning/bodyburn.ftl index 58b98c09bb..929b2344cf 100644 --- a/Resources/Locale/en-US/burning/bodyburn.ftl +++ b/Resources/Locale/en-US/burning/bodyburn.ftl @@ -1 +1 @@ -bodyburn-text-others = {$name} burns to ash! +bodyburn-text-others = {CAPITALIZE(THE($name))} burns to ash! From e4d7f164f63016cc3d20f1a3322e3bcc018e1b9e Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Wed, 2 Apr 2025 22:38:26 -0400 Subject: [PATCH 16/19] Localize air alarm states (#36266) --- .../Atmos/Monitor/UI/AirAlarmWindow.xaml.cs | 2 +- .../Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs | 8 ++++---- Resources/Locale/en-US/atmos/air-alarm-ui.ftl | 13 +++++++++++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs b/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs index f0201dc81b..ed15579937 100644 --- a/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs @@ -103,7 +103,7 @@ public sealed partial class AirAlarmWindow : FancyWindow _temperature.SetMarkup(Loc.GetString("air-alarm-ui-window-temperature", ("tempC", $"{TemperatureHelpers.KelvinToCelsius(state.TemperatureAverage):0.#}"), ("temperature", $"{state.TemperatureAverage:0.##}"))); _alarmState.SetMarkup(Loc.GetString("air-alarm-ui-window-alarm-state", ("color", ColorForAlarm(state.AlarmType)), - ("state", $"{state.AlarmType}"))); + ("state", state.AlarmType))); UpdateModeSelector(state.Mode); UpdateAutoMode(state.AutoMode); foreach (var (addr, dev) in state.DeviceData) diff --git a/Content.Client/Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs b/Content.Client/Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs index f906bd3930..9e88b0bff4 100644 --- a/Content.Client/Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs @@ -27,11 +27,11 @@ public sealed partial class SensorInfo : BoxContainer _address = address; - SensorAddress.Title = $"{address} : {data.AlarmState}"; + SensorAddress.Title = Loc.GetString("air-alarm-ui-window-listing-title", ("address", _address), ("state", data.AlarmState)); AlarmStateLabel.SetMarkup(Loc.GetString("air-alarm-ui-window-alarm-state-indicator", ("color", AirAlarmWindow.ColorForAlarm(data.AlarmState)), - ("state", $"{data.AlarmState}"))); + ("state", data.AlarmState))); PressureLabel.SetMarkup(Loc.GetString("air-alarm-ui-window-pressure-indicator", ("color", AirAlarmWindow.ColorForThreshold(data.Pressure, data.PressureThreshold)), ("pressure", $"{data.Pressure:0.##}"))); @@ -90,11 +90,11 @@ public sealed partial class SensorInfo : BoxContainer public void ChangeData(AtmosSensorData data) { - SensorAddress.Title = $"{_address} : {data.AlarmState}"; + SensorAddress.Title = Loc.GetString("air-alarm-ui-window-listing-title", ("address", _address), ("state", data.AlarmState)); AlarmStateLabel.SetMarkup(Loc.GetString("air-alarm-ui-window-alarm-state-indicator", ("color", AirAlarmWindow.ColorForAlarm(data.AlarmState)), - ("state", $"{data.AlarmState}"))); + ("state", data.AlarmState))); PressureLabel.SetMarkup(Loc.GetString("air-alarm-ui-window-pressure-indicator", ("color", AirAlarmWindow.ColorForThreshold(data.Pressure, data.PressureThreshold)), diff --git a/Resources/Locale/en-US/atmos/air-alarm-ui.ftl b/Resources/Locale/en-US/atmos/air-alarm-ui.ftl index 15043e4984..57e47cf4cf 100644 --- a/Resources/Locale/en-US/atmos/air-alarm-ui.ftl +++ b/Resources/Locale/en-US/atmos/air-alarm-ui.ftl @@ -15,12 +15,21 @@ air-alarm-ui-window-resync-devices-label = Resync air-alarm-ui-window-mode-label = Mode air-alarm-ui-window-auto-mode-label = Auto mode +-air-alarm-state-name = { $state -> + [normal] Normal + [warning] Warning + [danger] Danger + [emagged] Emagged + *[invalid] Invalid +} + +air-alarm-ui-window-listing-title = {$address} : {-air-alarm-state-name(state:$state)} air-alarm-ui-window-pressure = {$pressure} kPa air-alarm-ui-window-pressure-indicator = Pressure: [color={$color}]{$pressure} kPa[/color] air-alarm-ui-window-temperature = {$tempC} C ({$temperature} K) air-alarm-ui-window-temperature-indicator = Temperature: [color={$color}]{$tempC} C ({$temperature} K)[/color] -air-alarm-ui-window-alarm-state = [color={$color}]{$state}[/color] -air-alarm-ui-window-alarm-state-indicator = Status: [color={$color}]{$state}[/color] +air-alarm-ui-window-alarm-state = [color={$color}]{-air-alarm-state-name(state:$state)}[/color] +air-alarm-ui-window-alarm-state-indicator = Status: [color={$color}]{-air-alarm-state-name(state:$state)}[/color] air-alarm-ui-window-tab-vents = Vents air-alarm-ui-window-tab-scrubbers = Scrubbers From 8007a4ebf7517484fffad0814355c1440f21f4f5 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Wed, 2 Apr 2025 23:30:30 -0400 Subject: [PATCH 17/19] Fix a few loc bugs with magic mirror/scissors (#36269) * Use identity for magic mirror popups * THE() * Use correct pronouns in blocked-by-hat message --- Content.Server/MagicMirror/MagicMirrorSystem.cs | 10 +++++----- .../components/magic-mirror-component.ftl | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Content.Server/MagicMirror/MagicMirrorSystem.cs b/Content.Server/MagicMirror/MagicMirrorSystem.cs index 082fc81bd2..f3be03b4b0 100644 --- a/Content.Server/MagicMirror/MagicMirrorSystem.cs +++ b/Content.Server/MagicMirror/MagicMirrorSystem.cs @@ -59,7 +59,7 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem _popup.PopupEntity( component.Target == message.Actor ? Loc.GetString("magic-mirror-blocked-by-hat-self") - : Loc.GetString("magic-mirror-blocked-by-hat-self-target"), + : Loc.GetString("magic-mirror-blocked-by-hat-self-target", ("target", Identity.Entity(message.Actor, EntityManager))), message.Actor, message.Actor, PopupType.Medium); @@ -95,7 +95,7 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem } else { - _popup.PopupEntity(Loc.GetString("magic-mirror-change-slot-target", ("user", Identity.Name(message.Actor, EntityManager))), component.Target.Value, component.Target.Value, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("magic-mirror-change-slot-target", ("user", Identity.Entity(message.Actor, EntityManager))), component.Target.Value, component.Target.Value, PopupType.Medium); } component.DoAfter = doAfterId; @@ -175,7 +175,7 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem } else { - _popup.PopupEntity(Loc.GetString("magic-mirror-change-color-target", ("user", Identity.Name(message.Actor, EntityManager))), component.Target.Value, component.Target.Value, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("magic-mirror-change-color-target", ("user", Identity.Entity(message.Actor, EntityManager))), component.Target.Value, component.Target.Value, PopupType.Medium); } component.DoAfter = doAfterId; @@ -253,7 +253,7 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem } else { - _popup.PopupEntity(Loc.GetString("magic-mirror-remove-slot-target", ("user", Identity.Name(message.Actor, EntityManager))), component.Target.Value, component.Target.Value, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("magic-mirror-remove-slot-target", ("user", Identity.Entity(message.Actor, EntityManager))), component.Target.Value, component.Target.Value, PopupType.Medium); } component.DoAfter = doAfterId; @@ -331,7 +331,7 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem } else { - _popup.PopupEntity(Loc.GetString("magic-mirror-add-slot-target", ("user", Identity.Name(message.Actor, EntityManager))), component.Target.Value, component.Target.Value, PopupType.Medium); + _popup.PopupEntity(Loc.GetString("magic-mirror-add-slot-target", ("user", Identity.Entity(message.Actor, EntityManager))), component.Target.Value, component.Target.Value, PopupType.Medium); } component.DoAfter = doAfterId; diff --git a/Resources/Locale/en-US/character-appearance/components/magic-mirror-component.ftl b/Resources/Locale/en-US/character-appearance/components/magic-mirror-component.ftl index 0906cccee5..1b22fbf828 100644 --- a/Resources/Locale/en-US/character-appearance/components/magic-mirror-component.ftl +++ b/Resources/Locale/en-US/character-appearance/components/magic-mirror-component.ftl @@ -6,10 +6,10 @@ magic-mirror-remove-slot-self = You're removing some of your hair. magic-mirror-change-slot-self = You're changing your hairstyle. magic-mirror-change-color-self = You're changing your hair color. -magic-mirror-add-slot-target = Hair is being added to you by {$user}. -magic-mirror-remove-slot-target = Your hair is being cut off by {$user}. -magic-mirror-change-slot-target = Your hairstyle is being changed by {$user}. -magic-mirror-change-color-target = Your hair color is being changed by {$user}. +magic-mirror-add-slot-target = Hair is being added to you by {THE($user)}. +magic-mirror-remove-slot-target = Your hair is being cut off by {THE($user)}. +magic-mirror-change-slot-target = Your hairstyle is being changed by {THE($user)}. +magic-mirror-change-color-target = Your hair color is being changed by {THE($user)}. magic-mirror-blocked-by-hat-self = You need to take off your hat before changing your hair. -magic-mirror-blocked-by-hat-self-target = You try to change their hair but their clothes gets in the way. +magic-mirror-blocked-by-hat-self-target = You try to change {POSS-ADJ($target)} hair but {POSS-ADJ($target)} clothes get in the way. From 8ad7c9c281cb0aa40934365b3faeccb15dd1d6f5 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Thu, 3 Apr 2025 14:32:14 +1100 Subject: [PATCH 18/19] Add autocomplete to controlmob (#36234) Expensive for what it is just really annoying in debug to not have it. Worst case I just make it debug only and we don't add it for release. --- Content.Server/Administration/Commands/ControlMob.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Content.Server/Administration/Commands/ControlMob.cs b/Content.Server/Administration/Commands/ControlMob.cs index 8613fafeae..26cd83510b 100644 --- a/Content.Server/Administration/Commands/ControlMob.cs +++ b/Content.Server/Administration/Commands/ControlMob.cs @@ -43,5 +43,13 @@ namespace Content.Server.Administration.Commands _entities.System().ControlMob(player.UserId, target.Value); } + + public CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length != 1) + return CompletionResult.Empty; + + return CompletionResult.FromOptions(CompletionHelper.NetEntities(args[0], entManager: _entities)); + } } } From b2f7196e26f8e5b3bedcf14191355c4db987c7f8 Mon Sep 17 00:00:00 2001 From: Polter <62557990+PolterTzi@users.noreply.github.com> Date: Thu, 3 Apr 2025 08:03:36 +0200 Subject: [PATCH 19/19] Change the name and description of the templar helmet. (#36258) Changed the name and description of the knight helmet. Co-authored-by: Flesh --- Resources/Prototypes/Entities/Clothing/Head/helmets.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml index 91cf83d61b..0dfc37a627 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml @@ -187,12 +187,12 @@ - HeadTop - HeadSide -#Templar Helmet +#Knight Helmet - type: entity parent: ClothingHeadBase id: ClothingHeadHelmetTemplar - name: templar helmet - description: DEUS VULT! + name: knight helmet + description: Decorative helmet fashioned to resemble the knights of old. components: - type: Sprite sprite: Clothing/Head/Helmets/templar.rsi