using Content.Shared.Actions; using Content.Shared.Ninja.Systems; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Ninja.Components; /// /// Component for ninja suit abilities and power consumption. /// As an implementation detail, dashing with katana is a suit action which isn't ideal. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedNinjaSuitSystem))] public sealed partial class NinjaSuitComponent : Component { /// /// Sound played when a ninja is hit while cloaked. /// [DataField] public SoundSpecifier RevealSound = new SoundPathSpecifier("/Audio/Effects/chime.ogg"); /// /// ID of the use delay to disable all ninja abilities. /// [DataField] public string DisableDelayId = "suit_powers"; /// /// The action id for recalling a bound energy katana /// [DataField] public EntProtoId RecallKatanaAction = "ActionRecallKatana"; [DataField, AutoNetworkedField] public EntityUid? RecallKatanaActionEntity; /// /// Battery charge used per tile the katana teleported. /// Uses 1% of a default battery per tile. /// [DataField] public float RecallCharge = 3.6f; /// /// The action id for creating an EMP burst /// [DataField] public EntProtoId EmpAction = "ActionNinjaEmp"; [DataField, AutoNetworkedField] public EntityUid? EmpActionEntity; /// /// Battery charge used to create an EMP burst. Can do it 2 times on a small-capacity power cell. /// [DataField] public float EmpCharge = 180f; // TODO: EmpOnTrigger bruh /// /// Range of the EMP in tiles. /// [DataField] public float EmpRange = 6f; /// /// Power consumed from batteries by the EMP /// [DataField] public float EmpConsumption = 100000f; /// /// How long the EMP effects last for /// [DataField] public TimeSpan EmpDuration = TimeSpan.FromSeconds(60); } public sealed partial class RecallKatanaEvent : InstantActionEvent; public sealed partial class NinjaEmpEvent : InstantActionEvent;