// SPDX-FileCopyrightText: 2024 Piras314 // SPDX-FileCopyrightText: 2024 gluesniffler <159397573+gluesniffler@users.noreply.github.com> // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com> // // SPDX-License-Identifier: AGPL-3.0-or-later using Robust.Shared.GameStates; namespace Content.Shared._Shitmed.Targeting; /// /// Controls entity limb targeting for actions. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class TargetingComponent : Component { [ViewVariables, AutoNetworkedField] public TargetBodyPart Target = TargetBodyPart.Torso; /// /// What odds does the entity have of targeting each body part? /// [DataField] public Dictionary TargetOdds = new() { { TargetBodyPart.Head, 0.1f }, { TargetBodyPart.Torso, 0.3f }, { TargetBodyPart.Groin, 0.1f }, { TargetBodyPart.LeftArm, 0.1f }, { TargetBodyPart.LeftHand, 0.05f }, { TargetBodyPart.RightArm, 0.1f }, { TargetBodyPart.RightHand, 0.05f }, { TargetBodyPart.LeftLeg, 0.1f }, { TargetBodyPart.LeftFoot, 0.05f }, { TargetBodyPart.RightLeg, 0.1f }, { TargetBodyPart.RightFoot, 0.05f } }; /// /// What is the current integrity of each body part? /// [ViewVariables, AutoNetworkedField] public Dictionary BodyStatus = new() { { TargetBodyPart.Head, TargetIntegrity.Healthy }, { TargetBodyPart.Torso, TargetIntegrity.Healthy }, { TargetBodyPart.Groin, TargetIntegrity.Healthy }, { TargetBodyPart.LeftArm, TargetIntegrity.Healthy }, { TargetBodyPart.LeftHand, TargetIntegrity.Healthy }, { TargetBodyPart.RightArm, TargetIntegrity.Healthy }, { TargetBodyPart.RightHand, TargetIntegrity.Healthy }, { TargetBodyPart.LeftLeg, TargetIntegrity.Healthy }, { TargetBodyPart.LeftFoot, TargetIntegrity.Healthy }, { TargetBodyPart.RightLeg, TargetIntegrity.Healthy }, { TargetBodyPart.RightFoot, TargetIntegrity.Healthy } }; /// /// What noise does the entity play when swapping targets? /// [DataField] public string SwapSound = "/Audio/Effects/toggleoncombat.ogg"; }