CatStation/Content.Shared/Ninja/Components/NinjaSuitComponent.cs
AndrewFenriz dd46064672
Unify blink and katana dash teleportation (also removed EnergyKatana system/component) (#45041)
* ActionRestrictions

* katana use ActionGrant/ItemActionGrant

* TeleportAction

* no more DashAbility

* no more TeleportSpell

* no more EnergyKatana

* cleanup

* fix whitelist and popup

* docs

* display recharge cooldown

* refactor: whitespace consistency!111

* Revert "display recharge cooldown"

This reverts commit 3b93b179

* popup for limited charges

* maybe fix

* no more CanUseCharge

* upd

* better?

* refactor: using _SharedPhysicsSystem for TeleportActionSystem collision detection + small refactoring

* refactor: xml-doc

---------

Co-authored-by: Fildrance <fildrance@gmail.com>
2026-08-09 12:27:08 +00:00

81 lines
2.2 KiB
C#

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