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/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/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/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)); + } } } 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/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); 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/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; } 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); 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); } diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 45ca1f71b9..17ef3994ca 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,25 +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. - 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. - 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 +3879,24 @@ 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 +- 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 +- 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 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: 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 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! 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. 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}. 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 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 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/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 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 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 0000000000..52216714bf Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/worldpeas-slice.png differ 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 0000000000..d521aa5c49 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/Baked/pizza.rsi/worldpeas.png differ