// SPDX-FileCopyrightText: 2022 DrSmugleaf // SPDX-FileCopyrightText: 2022 Jezithyr // SPDX-FileCopyrightText: 2022 Nemanja <98561806+EmoGarbage404@users.noreply.github.com> // SPDX-FileCopyrightText: 2022 metalgearsloth // SPDX-FileCopyrightText: 2023 Jezithyr // SPDX-FileCopyrightText: 2023 Psychpsyo <60073468+Psychpsyo@users.noreply.github.com> // SPDX-FileCopyrightText: 2023 Visne <39844191+Visne@users.noreply.github.com> // SPDX-FileCopyrightText: 2023 metalgearsloth // SPDX-FileCopyrightText: 2024 gluesniffler <159397573+gluesniffler@users.noreply.github.com> // SPDX-FileCopyrightText: 2024 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> // SPDX-FileCopyrightText: 2025 Aviu00 <93730715+Aviu00@users.noreply.github.com> // SPDX-FileCopyrightText: 2025 Piras314 // // SPDX-License-Identifier: AGPL-3.0-or-later using Content.Shared.Damage; using Content.Shared.Movement.Systems; using Content.Shared.Standing; using Robust.Shared.Containers; using Robust.Shared.Prototypes; using Robust.Shared.Timing; namespace Content.Shared.Body.Systems; public abstract partial class SharedBodySystem : EntitySystem { /* * See the body partial for how this works. */ /// /// Container ID prefix for any body parts. /// public const string PartSlotContainerIdPrefix = "body_part_slot_"; /// /// Container ID for the ContainerSlot on the body entity itself. /// public const string BodyRootContainerId = "body_root_part"; /// /// Container ID prefix for any body organs. /// public const string OrganSlotContainerIdPrefix = "body_organ_slot_"; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] protected readonly IPrototypeManager Prototypes = default!; [Dependency] protected readonly DamageableSystem Damageable = default!; [Dependency] protected readonly MovementSpeedModifierSystem Movement = default!; [Dependency] protected readonly SharedContainerSystem Containers = default!; [Dependency] protected readonly SharedTransformSystem SharedTransform = default!; [Dependency] protected readonly StandingStateSystem Standing = default!; public override void Initialize() { base.Initialize(); InitializeBody(); InitializeParts(); InitializeOrgans(); // Shitmed Change Start // To try and mitigate the server load due to integrity checks, we set up a Job Queue. InitializeIntegrityQueue(); InitializePartAppearances(); InitializeRelay(); // Shitmed Change End } /// /// Inverse of /// protected static string? GetPartSlotContainerIdFromContainer(string containerSlotId) { // This is blursed var slotIndex = containerSlotId.IndexOf(PartSlotContainerIdPrefix, StringComparison.Ordinal); if (slotIndex < 0) return null; var slotId = containerSlotId.Remove(slotIndex, PartSlotContainerIdPrefix.Length); return slotId; } /// /// Gets the container Id for the specified slotId. /// public static string GetPartSlotContainerId(string slotId) { return PartSlotContainerIdPrefix + slotId; } /// /// Gets the container Id for the specified slotId. /// public static string GetOrganContainerId(string slotId) { return OrganSlotContainerIdPrefix + slotId; } }