using Robust.Shared.Audio;
using Robust.Shared.GameObjects;
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";
}