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;